home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / AMIGA / (A)C / (A)C1.ADF / Utilities / Lharc.doc < prev    next >
Text File  |  1989-09-12  |  28KB  |  612 lines

  1. _____________________________________________________________________
  2. ---------------------------------------------------------------------
  3.  
  4.                         LHARC        vers. 1.21
  5.  
  6.                         for the Commodore AMIGA
  7.          Compatible with version 1.13 of Lharc for MSDOS systems
  8.  
  9.                   by Paolo Zibetti   (FidoNet 2:331/101.6)
  10.                   (assembler routines by  Paolo Toccaceli) 
  11.  
  12.  
  13. ---------------------------------------------------------------------
  14.  IMPORTANT NOTICE:  This program is copyrighted by Paolo Zibetti, but
  15. can be freely distributed, providing that the following rules are
  16. respected.
  17.  - No change is made to the program nor to the accompaning
  18. documentation
  19.  - The package is always distributed in its complete form consisting
  20. of 3 files: "Lharc", "Lharc.doc" and "Changes".
  21.  - Every form of distribution is allowed and encouraged, but no fee
  22. can be charged for this program exept for, possibly, the cost of
  23. magnetic media and/or disk duplication and shipping.
  24.  - Inclusion in PD software libraries such as Fish Disks is allowed,
  25.    provided the fees charged for theese disks are comparable with
  26. those charged by Fred Fish.
  27.  - The program cannot be distributed in any commercial product
  28. without the written consent of the author.
  29.  By copying, distributing and/or using the program you indicate your
  30. acceptance of the above rules.
  31.  Also remember that this program is supplied 'as is': the entire risk
  32. as to the quality of the program is to the user. In no event will the
  33. author be liable for direct or indirect damage or loss resulting from
  34. the use of this program.
  35. ---------------------------------------------------------------------
  36. _____________________________________________________________________
  37.  
  38.  
  39.    Introduction ---
  40.  
  41. Lharc is an archive program such as Arc and Zoo. It can store several
  42. files in one archive in a compressed form which is generally more
  43. efficent than that used by Arc and Zoo.  It also supplies all of the
  44. archive handling capabilities that an archive program should have.
  45. In particular it is able to store an entire directory tree 
  46. with one single command. This enables you, for example, to store an
  47. entire floppy-disk with a single command creating an archive which is
  48. usually shorter than those prodeced by Warp or even LhWarp (see the
  49.  -r switch). Another important feature of Lharc is its ability to
  50. preserve the file attributes (see the -a switch) and filenotes (i.e.
  51. the comments that AmigaODS can associate to each file).
  52. Its only weakness is compression speed: Zoo 2.0, for example, is
  53. faster, but if compression efficency is more important for you than
  54. compression time you'll surely appreciate this progam. (anyway
  55. decompression is much faster than compression)
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  --- Before starting ---
  62.  
  63. Lharc is a 'pure' program, i.e. you can make it resident via the
  64. 'resident' Amigados command just like any other command found in the
  65. c: directory. Keeping Lharc resident will greatly facilitate users
  66. who make an heavy use of Lharc (especially those who don't have an
  67. hard disk).
  68. If you have just received Lharc, beware that some copy programs and
  69. some archivers (including the zoo archiver which is used for
  70. distribution of Lharc) don't preserve file attributes, so the 'p'
  71. flag may not be set for the Lharc executable and Amigados won't
  72. understand that Lharc is a pure program. If so, just type the
  73. following line at the CLI prompt:
  74.  
  75.  protect Lharc p add
  76.  
  77.  
  78.  
  79.  
  80.  --- How to use ---
  81.  
  82. Lharc is run from CLI with the following command line:
  83.  
  84.   Lharc [<switches>] <Command> <Archive> [<dest path>] [<file
  85. patterns>]
  86.          items in square brackets are optional.
  87.  
  88.  
  89.  
  90.  
  91. <Command> can be any of the following (case is not significant):
  92.  
  93.  
  94.   e,x  extract files from archive
  95.        Extracts files from archives. If you specify some file names
  96.        or patterns only those files satisfying the patterns are
  97.        extracted, otherwise all the files in the archive are
  98.        extracted.
  99.        While extracting files, Lharc checks if a file by the same
  100.        name already exsists in the destination directory and prompts 
  101.        you before overwriting the old file with the extracted one 
  102.        (unless you specified the -m switch). By default, if the files
  103.        have a path name stored in the archive, they are extracted
  104.        with their path and needed directories are automatically
  105.        created; use the -x0 switch to ignore path names. See below
  106.        under '<dest path>' for a discussion on where the extracted
  107.        files are stored.
  108.  
  109.   l    show archives contents
  110.        Displays the names of the files in an archive along with their
  111.        date, time, CRC, compression type, original lenght and
  112.        compressed lenght.
  113.        If the -x switch is specified file names are listed complete
  114.        with their path (if present in the archive), otherwise
  115.        only the name of the files is listed.
  116.        The 'l' command won't list the comments (filenotes) that may
  117.        be associated with a file: use the 'v' command to see them,
  118.        too.
  119.  
  120.   v    Same as 'l', but default is to display full pathnames: i.e.
  121.        the 'v' command is equivalent to the 'l' command with the -x
  122.        switch; on the other hand the 'l' command is equivalent to the
  123.        'v' command with the -x0 switch. Moreover 'v' will also show
  124.        any filenote (i.e. comment) associated with the files;
  125.        filenotes, if present, are listed on a separate line preceded
  126.        by a colon (i.e. in the same format used by the AmigaDOS
  127.        'list' command).
  128.  
  129.   p    extract and print files to screen
  130.        same as 'e' and 'x', but extracted files are sent to stdout
  131.  
  132.   t    test archive integrity
  133.        Checks CRCs and checksums to ensure that the archive is not
  134.        corrupted. Lharc will test all the files on the archive, one
  135.        after each other, printing "OK" to the right of the file names
  136.        which are OK and "WARNING: CRC check failed" to the right of 
  137.        file names that are corrupted. At the end of the test the
  138.        message "Operation successful" means that all the files tested
  139.        were OK, while the message "Operation not totally successful"
  140.        means that some files in the archive were corrupted (so you
  141.        will know of a corrupted file even if the warning message
  142.        relating to that file has scrolled away on the screen) 
  143.  
  144.   a    create archives or add to existing archives
  145.        Files are stored in alphabetical order, unless you change
  146.        this with the -S switch. Note however that sorting only
  147.        applies to the files beeing added in the current session,
  148.        i.e. if you add files to an existing archive containing
  149.        other files, the new files will be stored, in alphabetical
  150.        order, AT THE END of the archive: old and new files won't be
  151.        intermixed to preserve global alphabetical order.
  152.        If you try to archive a file and a file by the same name
  153.        already exists in the archive the file will not be added
  154.        and a message will be printed on the screen to inform you. 
  155.        By default only file names are stored in the archive, use the 
  156.        -x switch to store file names complete with their paths.
  157.        Also, by default file attributes are not stored, use the '-a'
  158.        switch to obtain this.
  159.  
  160.   m    move files into archivs
  161.        Same as add, but deletes original files after archiving them
  162.  
  163.   d    delete files from archives
  164.        You can delete from an archive a maximum of 150 files at a
  165.        time, if you find that they are too little, please let me
  166.        know!  
  167.  
  168.   u    update files in archives
  169.        Same as with the 'a' command. However, if a file already
  170.        exists in the archive, LHarc will check its time stamp and
  171.        will keep the newer one and ignore the older one.
  172.  
  173.   f    freshen files in archives
  174.        Replaces a file in the archive with the newer one only if a
  175.        file with the same name already exists in the archive.
  176.        Otherwise, no action is taken.
  177.  
  178.  
  179.  
  180.  
  181. <Archive> is the name (eventually preceded by a path) of the
  182. archive you want to work on. If no extension is specified the default
  183. extension .LZH is used. 
  184. With the 'l' (or 'v'), 'e' (or 'x'), 'p', 't' and 'a' commands you
  185. can work on multiple archives by using wildcards (see 'file patterns'
  186. below for a list of accepted wildcards). For example "lharc v *.LZH"
  187. will show the contents of all the archives in the current directory,
  188. while "lharc x *.LZH *.c" will extract all the C source files
  189. contained in all the archives in the current directory.
  190.  
  191.  
  192.  
  193. [<dest path>] 
  194. This parameter is significant only with the 'x' (or 'e') command and
  195. is ignored otherwise. It tells where to put the extracted files; if
  196. not specified, extracted files will go to the current directory.
  197. Please note that this paramenter must always end with '/' or ':'
  198. otherwise it will not be recognized as such and will be considered
  199. as one of the file patterns. 
  200. If the path specified by <dest path> (or equivalently the path stored
  201. in the archive) does not already exist, you will be prompted if you
  202. want new directories to be automatically created (unless you
  203. specified the -m switch, in which case directories will be created
  204. without any prompt).
  205.  
  206.  
  207.  
  208. [<file patterns>] reppresents an optional number of file names
  209. or file patterns. They indicate which files to
  210. extract/compress/list/delete, ecc. 
  211. Accepted wild cards are the standard AmigaDOS '#' and '?' plus the
  212. '*' which is a synonim of '#?'. Since however the asterisk is a valid
  213. character in AmigaDOS file names I provided the '**' sequence as an
  214. escape. So if you want to refer to a file name containing an asterisk
  215. just double the asterisk in the file name.  
  216. Example:  '*.c' is equivalent to '#?.c' and refers to all the files
  217. ending with '.c', while 'my**file' refers to the file 'my*file'.
  218.  
  219.  
  220.  
  221.  
  222. [<switches>] rappresents an optional number of switches that are used
  223. to change the behaviour of the program.
  224. A switch is composed by  a leading '-' followed by one letter; unlike
  225. commands which are case insensitive, switches are case sensitive.
  226. An important point is that if you want to specify more than one
  227. switch, every switch must be preceded by its own dash, i.e. to
  228. activate the 'x' and 'm' switches you must enter "-x -m" and NOT
  229. "-xm". You can store your favourite switch configuration in an
  230. environment variable (see below) so that you don't have to type them
  231. every time. All the switches that don't take a parameter can be
  232. followed by a '0' which turns off the function, while the switch
  233. alone or the switch followed by a '1' turns the function on: i.e. -x
  234. means "use extended file names",  while -x0 means "don't use them".
  235. So you can override the default settings or the settings you
  236. specified in the environment variable "LHARC". 
  237. Default value for every switch is off, exept for the -x switch which
  238. is by default on with the 'x' 'e' 'd' and 'v' commands and off with
  239. the other  commands.
  240.  
  241. Here is a summary of the available switches:
  242.  
  243.  
  244.   -p  Pause after loading        [note that this is lowercase 'p']
  245.       Causes Lharc to wait for the user to press RETURN before
  246.       executing a command. This allows floppy disk users to swap
  247.       disks after loading Lharc.
  248.  
  249.   -m  no Message for query
  250.       Suppresses all the queries Lharc normally issues before
  251.       overwriting existing files or before creating new directories
  252.       If you specify this switch Lharc will behave as if you choose
  253.       the default action (indicated by an uppercase letter) in
  254.       response to all the questions. This switch also disables
  255.       autoshowing of files (see 'Autoshow files' below)
  256.  
  257.   -x  use eXtended file names
  258.       By default, LHarc stores only the file names of files and
  259.       disregards the names of the directories in which they reside.
  260.       This switch, used with the 'a' command, tells LHarc to extend
  261.       all file names with directory names; with the 'x' 'e' 'd'
  262.       and 'v' commands the -x switch is automatically turned on: use 
  263.       -x0 if you want to turn it off thus ignoring pathnames with
  264.       these commands.
  265.  
  266.   -n  No progress indicator
  267.       Suppresses the display of the number of bytes beeing processed
  268.       during compression or decompression. May be useful if you
  269.       redirect to a file the output of Lharc.
  270.       Note: this version of Lharc allows the -N switch as a synonim
  271.       of -n : but this might change in future versions, so preferibly
  272.       use the lowercase letter.
  273.  
  274.   -w  set Work directory
  275.       Use this switch to choose your own directory for temporary
  276.       files. The directory name must immediatly follow the letter 'w'
  277.       without any leading space, i.e. to set the 'temp' directory on
  278.       your hard-disk as the working directory you must write
  279.       "-wdh0:temp". See below "Temporary files" for a discussion on
  280.       where temporary files are stored in the absence of this switch.
  281.  
  282.   -P  set Priority          [note that this is uppercase 'P']
  283.       Use this switch to set the priority with which Lharc will be
  284.       executed. Priority must be in the range -5..+5  and must
  285.       immediately follow the 'P' letter without blanks in between.
  286.       By default Lharc is excuted with the same priority of the task
  287.       that invoked it; using this switch will set the new priority
  288.       immediatley after loading and will set back the priority to the
  289.       original value immediately after terminating. If you want to do
  290.       something else with your Amiga, for example editting a letter,
  291.       while Lharc is compressing a long file, I suggest that you set
  292.       Lharc's priority to one less than that of the other program,
  293.       i.e. if you started your editor with the usual priority of zero
  294.       then invoke Lharc with the '-P-1' switch to set its priority to
  295.        -1
  296.  
  297.   -a  consider file Attributes
  298.       By default Lharc will ignore file attributes (i.e. the flags
  299.       indicating protection from deletion, and so on) for maximum
  300.       compatibility with the MSDOS version: in other words it will
  301.       store files with an attribute bit pattern which is suitable for
  302.       MSDOS machines while during extraction it will ignore the
  303.       attributes stored in the archives, setting the attributes of
  304.       the extracted files to the usual '----rwed'. If you use this
  305.       switch, on the contrary, files will be stored with their
  306.       original attributes and during extraction the stored attribute
  307.       will be restored. Remember that, to effectively preserve file
  308.       attributes, you must use this switch both during compression
  309.       and during extraction. Of course AmigaDOS file attributes are
  310.       meaningless to MSDOS and vice-versa; so extract files with the
  311.       -a switch only if you are sure that they contain AmigaDOS file
  312.       attributes and similarly compress files with the -a switch only
  313.       if you are sure that the archive will be unpacked only by
  314.       Amigas and not by MSDOS machines. (Anyway no harm is done if
  315.       this rule is not respected: extracted files will simply have
  316.       strange attributes)
  317.  
  318.   -u  convert file names to Uppercase
  319.       By default Lharc stores file names/paths with their original
  320.       case, if you use this switch they will be converted to
  321.       uppercase. See below 'Compatibility' for a possible use of this
  322.       switch.
  323.  
  324.   -r  Recursively collect files
  325.       This switch instructs Lharc to search for files matching the
  326.       specified patterns not only in the specified directories, but
  327.       also in all the subdirectories that may be found in the
  328.       specified directories. For example: "Lharc -r a archive.lzh
  329.       df1:source/*.c" will search for files whose name ends with ".c"
  330.       in "df1:source/" and in all the subdirectories that may be
  331.       contained in the "df1:source" directory. Another example:
  332.       "Lharc -r a archive.lzh df1:*" will archive the entire disk in
  333.       drive df1:, including all its subdirectories, (you may wish to
  334.       add the -a switch to the above line in order to be able to
  335.       re-build exactly the disk, including file attributes) Very
  336.       powerful, isn't it ? When you specify the -r switch, files are
  337.       always stored with their path name, i.e. the -r switch
  338.       automatically turns on the -x switch, too.
  339.  
  340.   -S  Set sorting criteria         [note that this is an UPPERCASE S]
  341.       This switch sets the sort criterium for files beeing added to
  342.       archives. The '-S' must be immediatly followed by one or two
  343.       characters, i.e. -Sxy 
  344.       'x' can be any of the following:
  345.          0  Don't sort files
  346.          a  Alphabetical sort
  347.          c  Chronological sort
  348.       'y', if present, can be any of the following:
  349.          a  Ascending order
  350.          d  Descending order
  351.       If 'y' is absent, ascending order is assumed by default.
  352.       Examples:
  353.          -Scd          Sort chronologically in descending order
  354.          -Sc  or -Sca  Sort chronologically in ascending order.
  355.          -S0           Don't sort at all
  356.          -Saa          Sort alphabetically in ascending order, this
  357.                        is the default action which is taken if you
  358.                        don't specify this switch. 
  359.  
  360.   -b  Set I/O buffer size
  361.       Big I/O buffers can considerably speed up some operations of
  362.       Lharc (especially with hard disks) however if you are low on
  363.       memory you may prefer to use small I/O buffers. This switch
  364.       lets you set the amount of memory that Lharc will use as an I/O
  365.       buffer: the number of Kbytes of memory to be used must
  366.       immediately follow the 'b' without any spaces in between, e.g. 
  367.       -b20 tells Lharc to use 20 kbytes of memory for I/O buffers.
  368.       Any number between 6 and 37 is valid, default is using 11
  369.       Kbytes: if you are low on memory you can lower this amount, but
  370.       if you have plenty of memory I suggest that you raise it. I
  371.       suggest that you set this switch at the value you like in the 
  372.       environment variable 'LHARC' (see below) so that you don't have
  373.       to specify this switch every time you invoke Lharc.
  374.  
  375.   -f  Ignore filenotes
  376.       By defaults Lharc archives files complete with their comment
  377.       (filenote). If you set this switch filenotes won't be stored in
  378.       archives and files beeing extracted won't have their filenote
  379.       even if it's present in the archive. There is no compatibility
  380.       problem, but if you are not interested in filenotes you may set
  381.       this switch to reduce the archive size (filenotes are stored in
  382.       uncompressed form, so if you have long filenotes they can
  383.       increase the size of the archive)
  384.  
  385.  
  386.  
  387.  
  388.  
  389.  --- Setting switches in an environment variable ---
  390.  
  391.    You may set any of LHarc's default switches with the environment
  392.    variable 'LHARC': So, if you, for example, want to always archive
  393.    files with their attributes, use the maximum allowed I/O buffer
  394.    size and use 'dh0:mytemp/' as a working directory you simply type:
  395.  
  396.    SenEnv LHARC  "-wdh0:mytemp -a -b37"
  397.  
  398.    (don't forget the quotes): now Lharc will behave as if you typed
  399.    the above switches every time you invoke it. You can insert the
  400.    setenv command in your startup-sequence so that it's automatically
  401.    executed every time you turn your computer on. Of course, you can
  402.    always override the default settings estabilished in the
  403.    enviroment variable with the command line: for example an '-a0' in
  404.    the command line will override the '-a' found in the above
  405.    enviroment variable. Please note that the 'setenv' command is only
  406.    available in Workbench 1.3 and higher: if you are using older
  407.    versions of the O.S. this feature is not available.  
  408.  
  409.  
  410.  
  411.  
  412.  
  413.  
  414.  --- Autoshow files ---
  415.  
  416. Suppose that your archive contains an important text file that you
  417. want to be sure it will be read by the guy who unpacks the archive.
  418. The file may for example contain a copyright notice or some special
  419. instructions for unpacking (if you have packed the archive with the
  420. -a switch you may wish to remind to the one who unpacks the archive
  421. that he/she has to use the -a switch too). For this purpuse this
  422. version of Lharc introduces autoshow files: while unpacking an
  423. archive, if Lharc encounters a file whose name ends with
  424. ".TXT.DISPLAYME" (case is not significant and quotes must not be
  425. included, of course), it first extracts the file (removing the
  426. .DISPLAYME extension) and then displays in a window the text found in
  427. that file waiting for the user to press RETURN before proceeding.
  428. You can add as many autoshow files as you want, for example one at
  429. the beginning and one at the end of the archive. Autoshowing of files
  430. is disabled when the -m switch is active so that a non-interactive
  431. unpacking session is allowed. Lharc uses the standard CON: device to
  432. open a window for displaing text, so you can insert ANSI codes in
  433. your autoshow files to make your messages nicer. Lharc will adjust
  434. the size of the window according to the number of lines contained in
  435. the text file, but the maximum allowed size is that of an NTSC screen
  436. (200 pixels), so if your text is longer than 20 lines it will scroll
  437. away. Finally, please note that this feature is unique to the Amiga
  438. version of Lharc (for now...) so remember that if your archive will
  439. be unpacked on another machine (or an an Amiga using Lharc version
  440. 1.0 or lower) autoshow files will simply be extracted without
  441. displaying them on the screen; anyway your important text file will
  442. still be there for later reading by the user and no compatibility
  443. problems will arise.
  444.  
  445.  
  446.  
  447.  
  448.  
  449.  --- Temporary files ---
  450.  
  451. While compressing files Lharc creates a temporary file called
  452. 'Lharc.TMP_XXXXXX' where XXXXXX is a hex digit representing the
  453. address of its own Task structure as returned by Exec's
  454. FindTask(NULL). The reason for the XXXXXX part of the name is that if
  455. you run multiple copies of Lharc at the same time each copy will
  456. create its own temporary file with a different name (usefull for
  457. multiline BBSes for example). Here is how Lharc decides where to
  458. store temporary files. If you specify a path with the -w switch
  459. temporary files are stored there, otherwise if the T: logical device
  460. is assigned they will be stored in that directory, otherwise they
  461. will go to the current directory. If you are not using the -w switch,
  462. in order to increase compression speed, I reccomend that you assign
  463. T:  to a directory in the ram-disk. Note however that T: is usually
  464. automatically assigned to 'ram:t' in the startup-sequence of the
  465. standard Workbench, so, unless you have modified the
  466. startup-sequence, you don't have to worry about this.
  467.  
  468.  
  469.  
  470.  
  471.  
  472.  
  473.  --- Corrupted archives ---
  474.  
  475. This version al Lharc for the Amiga has the capability of
  476. automatically handle corrupted archives. A Lharc archive is made up
  477. of several compressed files each precedeed by a header containing
  478. information about file name, date, lenght,... To ensure that the
  479. archive is not corrupted the header also contains a 16 bit CRC of the
  480. file and an 8 bit checksum of the header itself. If during extraction
  481. Lharc finds a corrupted file (i.e. one whose CRC does not match with
  482. the one stored in the header) the file is extracted anyway, but a
  483. warning is printed on the screen. The worst case comes when the
  484. header of a file is corrupted: in this case the file cannot be
  485. extracted even if the file itself is not corrupted. In this case
  486. Lharc will automatically skip the corrupted entry by starting a
  487. search for the next valid entry in the archive and will print a
  488. message like "WARNING: skipping extraneous/corrupted data". The
  489. reason for which it says "extraneous/corrupted" is that an Lharc
  490. archive might happen to contain parts that Lharc cannot recognize as
  491. valid archive entries even it's not corrupted. This happens when you
  492. are extracting files from a self-extracting archive produced by the
  493. MSDOS version of Lharc, since a self-extracting archive contains 8086
  494. extraction code which the Amiga-Lharc sees as extraneous data. The
  495. only extraneous data which is passed without warnings is additional
  496. bytes at the end of an archive: since they are likely to consist of
  497. zero padding due to XMODEM transfer they are totally ignored.
  498.  
  499.  
  500.  
  501.  
  502.  
  503.  
  504.  
  505.  --- Return codes ---
  506.  
  507. When Lharc finishes his work, it returns to the operating system one
  508. of 3 possible return codes:
  509.  
  510.  0  Everything was OK  (the message "Operation successful" is printed
  511. on the screen). 
  512.  5  Lharc finished its work, but something went wrong, for example
  513. Lharc encountered a corrupted entry in the archive, but was able to
  514. continue extracting/testing the rest of the archive (the message
  515. Operation not totally succesful" is printed on the screen).
  516.  20 A fatal error occurred and Lharc was unable to continue its work
  517. (an appropriate message explaining the problem is printed on the
  518. sceen) 
  519.  
  520. Thus you can test the succes of operation in your script files by
  521. means of the 'failat' statement and the 'if warn' test.
  522.  
  523.  
  524.  
  525.  
  526.  --- Bugs ---
  527.  
  528. No known known bugs remain in this version.
  529.  
  530.  
  531.  
  532.  
  533.  ---- Compatibility ---
  534.  
  535. This program is aimed at full compatibility with the MSDOS version
  536. 1.13 of Lharc. A few little problems might arise from some file names
  537. that are legal under AmigaDOS, but illegal under MSDOS. As a matter
  538. of facts AmigaDOS allows a wider range of file names (almost every
  539. character in the ASCII set is allowed and file names can be longer
  540. than 8 characters). For the greatest convenience of Amiga users, I
  541. choose not to restrict the file name range to accomplish the MSDOS
  542. rules, but if you expect that your archives will be unpacked on an
  543. MSDOS machine you'd better respect the MSDOS limits. Also note that,
  544. although MSDOS Lharc version 1.13 CAN extract files whose names
  545. contain lowercase letters, its pattern matching functions don't work
  546. properly with lowercase file names. So if you want to extract an
  547. Amiga-created archive on an MSDOS machine by using pattern matching
  548. functions (for example to extract only some files instead of the
  549. whole archive) you have to create the archive on the Amiga with the
  550. -u switch. Finally, to attain 100% compatibility you shuold not use
  551. the '-a' switch (see above in the switch descriptions)
  552.  
  553. Also note that the MSDOS version of Lharc has the additional
  554. capability of extracting files from archives produced by Larc (a
  555. popular Japanise archive program): this feature will not be
  556. implemented in the Amiga version.
  557.  
  558.  
  559.  
  560.  
  561.  ---- Acknowledgements ---
  562.  
  563. First of all I give credit to Haruyasu Yoshizaki for devising such an
  564. efficent compression algorythm as LZHUF. Second, since the source to
  565. the MSDOS version of Lharc is scarcely portable (lots of 8086
  566. assembler ruotines and MSDOS-dependent C functions), I had to rewrite
  567. the program from scratch. Note however that for LZHUF
  568. compression/decompression I have used as a starting point a 'C'
  569. source for an example of single file compression which I found on a
  570. BBS. Although the code has been now remanaged (and partially
  571. rewritten in assembler by Paolo Toccaceli) it nevertheless was
  572. invaluable to me. For sake of correctness I quote here the the header
  573. found on this source:  
  574.  
  575. /*
  576.  * LZHUF.C English version 1.0
  577.  * Based on Japanese version 29-NOV-1988
  578.  * LZSS coded by Haruhiko OKUMURA
  579.  * Adaptive Huffman Coding coded by Haruyasu YOSHIZAKI
  580.  * Edited and translated to English by Kenji RIKITAKE
  581.  */
  582.  
  583. I whish to thank the above people whose work has been of fundamental
  584. importance for this project. Thanks to Stefan Boberg for suggesting
  585. how to store filenotes in the archive structure that didn't provide
  586. space for them. Many thanks also go to all the people who contributed
  587. with suggestions and bug reports and particularly to Luca Spada for
  588. his invaluable beta testing work.
  589.  
  590.  
  591.  
  592.  
  593.  --- How to reach me ---
  594.  
  595. Please send suggestions, comments and bug reports to:
  596.  
  597. Paolo Zibetti       Fidonet 2:331/101.6
  598.  
  599. node 2:331/101 (AmnesiA) is also the official distribution node for
  600. Amiga-Lharc: you'll always find the latest version available on this
  601. board. If you are an officially listed FidoNet node you can f'request
  602. the latest version of Lharc with the magic file name AMILHARC.
  603.  
  604. Amnesia (2:331/101)  phone +39-331-263425  (v32/HST, upto 14400 bps)
  605.  
  606.  
  607.  
  608. For those who don't have access to a FidoNet node, my Fidonet point
  609. can also be reached from Internet/UUCP at the following address:
  610.  
  611. Paolo.Zibetti@p6.f101.n331.z2.fidonet.org
  612.